package service;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Scanner;

import dao.JDBC_SQL;
import dao.JDBC_ConnClose;
import model.AdminVO;
import screen.AdminMain;
import screen.LoginMain;

public class AdminCreate {
	static AdminVO av = new AdminVO(); 
	static JDBC_SQL sql = new JDBC_SQL(); 
	static Scanner sc =  new Scanner(System.in); 
	static Connection conn = null;
	static PreparedStatement pstmt = null; 
	static ResultSet rs = null;
	static boolean b = true;
	static String logId = LoginMain.logIdVO;
	
	public static void createAdmin() {
		while ( b ) {	
			System.out.print("\n관리자가 사용하실 시스템 아이디를 입력하세요 : ");
			av.setAdmin_id( sc.next() );
			try {
				conn = JDBC_ConnClose.openDataBase();
				pstmt = conn.prepareStatement(sql.AdminSelectAllSQL);
				pstmt.setString( 1, av.getAdmin_id());
				rs = pstmt.executeQuery();
				if ( rs.next() ) {
					System.out.println("이미 사용중인 아이디 입니다. 다시 입력해주세요.");
				} else { break; }
			} catch ( Exception e ) {
				e.printStackTrace();
			} finally {
				JDBC_ConnClose.closeDataBase(conn, pstmt, rs);
			}
		}
		System.out.print("담당 관리자의 이름을 입력하세요 : ");
		av.setAdmin_name( sc.next() );
		while ( b ) {
			System.out.print("관리자가 사용하실 시스템 비밀번호를 입력하세요 : ");
			av.setAdmin_pw( sc.next() );
			if ( av.getAdmin_id().equals( av.getAdmin_pw() ) ) {
				System.out.println("아이디와 동일한 비밀번호는 사용하실 수 없습니다. 다시 입력해주세요");
			} else { break; }
		}
		System.out.print("담당 관리자의 연락처를 입력하세요 : ");
		av.setAdmin_tel( sc.next() );
		System.out.println( av.toString() );
		while ( b ) {
			System.out.print("해당 내용을 저장하시겠습니까? [ Y / N ] : ");
			switch ( sc.next() ) {
			case "Y" : case "y" :
				try {
					conn = JDBC_ConnClose.openDataBase();
					pstmt = conn.prepareStatement( sql.AdminInsertSQL );
					pstmt.setString( 1, av.getAdmin_id() );
					pstmt.setString( 2, av.getAdmin_name() );
					pstmt.setString( 3, av.getAdmin_pw() );
					pstmt.setString( 4, av.getAdmin_tel() );
					pstmt.executeUpdate();
				} catch ( Exception e ) {
					e.printStackTrace();
				} finally {
					JDBC_ConnClose.closeDataBase( conn, pstmt, null );
				}
				b = false; break;
			case "N" : case "n" :
				System.out.println("관리자 관련 업무 화면으로 이동합니다.");
				AdminMain.AdminSubScreen();
				b = false; break;
			default :
				System.out.println("잘못 입력하셨습니다. 다시 입력해주세요");
			}
		} 
		b = true;
		while ( b ) {
			System.out.print("시스템 관리자를 추가 등록하시겠습니까? [ Y / N ] : ");
			switch ( sc.next() ) {
			case "Y" : case "y" :
				System.out.println("관리자를 추가 등록합니다.");
				AdminCreate.createAdmin();
			case "N" : case "n" :
				System.out.println("관리자 관련 업무 화면으로 이동합니다.");
				AdminMain.AdminSubScreen();
			default :
				System.out.println("잘못 입력하셨습니다. 다시 입력해주세요");
			}
		} 
	}
}
